# -*- coding: utf-8 -*-

# === ユーザー管理用コントローラ（一般ユーザー向け）
# 一般ユーザー向けに、ユーザー一覧機能を提供したり、個々のユーザーのパスワード
# 更新などの機能を提供する。
class Common::UsersController < ApplicationController
  # === ユーザー一覧画面の表示
  def show
    @profiles = Profile.where(:permissions => ["members", "all"])
    @profiles = @profiles.paginate(:order => "created_at DESC",
                                   :include => :user,
                                   :per_page => 10,
                                   :page => params[:page])
  end

  # === 新規ユーザー登録用フォームの表示
  # TODO: これはどう考えても不要…。参照していないか確認して削除すること。
  # しかも誰でも使えるし。これじゃSNSじゃないな。
  def new
    @common_user = User.new
  end

  # === 既存ユーザーのパスワード変更用フォームの表示
  def edit
    @common_user = current_user
  end

  # === 新規ユーザー登録実行
  # TODO: これはどう考えても不要…。参照していないか確認して削除すること。
  # しかも誰でも使えるし。これじゃSNSじゃないな。
  def create
    @common_user = User.new(params[:user])
    if @common_user.save
      setting = Setting.new(:message_format_type => "plain",
                            :blog_format_type => "markdown")
      setting.user = @common_user
      profile = Profile.new(:permissions => "none")
      profile.user = @common_user
      if setting.save && profile.save
        flash[:notice] = 'ユーザー登録が完了しました。'
        redirect_back_or_default common_user_url
      else
        raise "プロフィールもしくは個人設定の作成に失敗しました。"
      end
    else
      render :action => "new"
    end
  end

  # === 既存ユーザーのパスワード変更の実行
  def update
    @common_user = current_user
#    params[:user][:login] = current_user.login
    
    if @common_user.update_attributes(params[:user])
      flash[:notice] = 'パスワード情報を更新しました。'
      redirect_back_or_default common_user_url
    else
      render :action => "edit"
    end
  end

  # === カレントユーザーの退会処理
  # TODO: 今のところどこからもリンクしていないとは言え、さすがにコレはいかがなものか…。
  def destroy
    @common_user = current_user
    @common_user.destroy
    flash[:notice] = '退会手続きを完了しました。'
    redirect_to(new_common_user_url)
  end
end
